#include <stdio.h>
#include <stdint.h>

#pragma pack(1)

typedef struct {
  uint8_t frameid_type;   // 帧ID类型： 0x00： 标准帧； 0x01： 扩展帧
  uint8_t frame_type;     // 帧数据类型: 0x00： 数据帧； 0x01： 远程帧
  uint8_t frame_dlc;      // 帧数据区有效长度   0x01 ~ 0x08
  uint8_t frame_id[4];    // 帧ID  , 标准帧ID占11位，扩展帧ID占29位，大端模式
  uint8_t frame_data[8];  // 帧数据区,  大端模式
} uart2can_msg_t;

#pragma pack()


static uint32_t big2little_endian(uint8_t *byte4) {
  uint32_t bigendian = 0;
  bigendian = (uint32_t)((byte4[0] << 24) | (byte4[1] << 16) | (byte4[2] << 8) | (byte4[3]));
  return bigendian;
} 

int main(int argc, char const *argv[]) {
  uart2can_msg_t msg;

  msg.frame_id[0] = 0x00;
  msg.frame_id[1] = 0x00;
  msg.frame_id[2] = 0x07;
  msg.frame_id[3] = 0xff;

  uint32_t id = big2little_endian(msg.frame_id);

  printf("btol frameid: 0x%x\n", id);

  if (id == 0x7ff) {
    printf("trans ok\n");
  }


  return 0;
}
